package auth

import (
	"fmt"
	"pay/api/pay"
	"pay/pkg/token"
)

// CustomerToken
type CustomerToken struct {
	*pay.CustomerToken
	Exp int64 `json:"exp"`
	Iat int64 `json:"iat"`
}

// string
func (m CustomerToken) String() string {
	return fmt.Sprintf("member_id=%d,sg_id=%d,app_type=%s,app_id=%s,open_id=%s,iat=%d,exp=%d",
		m.MemberId, m.SgId, m.AppType, m.AppId, m.OpenId, m.Iat, m.Exp)
}

// Valid
func (m CustomerToken) Valid() error {
	return token.VerifyJwt(m.Exp, m.Iat)
}

type CustomerTokenRequest interface {
	GetToken() *pay.CustomerToken
}
